package com.mxx.common.security.displacer;

import java.nio.charset.Charset;

/**
 * @Author itzgyw
 * @Date 2020-02-24
 * @Time 0:27
 * @Description:
 */
public interface Displacer {

    Displacer BASE64 = new Base64Displacer();

    Displacer HEX = new HexDisplacer();

    default String toString(byte[] bytes) {
        return new String(bytes, getCharset());
    }

    default byte[] toBytes(String data) {
        return data.getBytes(getCharset());
    }

    byte[] encoder(byte[] bytes);

    default byte[] encoder(String data) {
        return encoder(toBytes(data));
    }

    default String encoderToString(byte[] bytes) {
        return toString(encoder(bytes));
    }

    default String encoderToString(String data) {
        return encoderToString(toBytes(data));
    }

    byte[] decoder(byte[] bytes);

    default byte[] decoder(String data) {
        return decoder(toBytes(data));
    }

    default String decoderToString(byte[] bytes) {
        return toString(decoder(bytes));
    }

    default String decoderToString(String data) {
        return decoderToString(toBytes(data));
    }


    Charset getCharset();


}
